/**
 * @mainpage
 * @par O silniku:
 * shipEngine jest frameworkiem/silnikiem dla programistów gier, rendering można oprzeć o niemal kazdą bibliotekę graficzną, wystarczy wyposażyć ją w odpowiedni interfejs.
 * @author Paweł Łuczkiewicz/kapitan_hak
 * @date 2007.03.18
 * @version alpha 0
 * @par Kontact:
 * Jeśli masz do mnie jakieś pytania or sth, skontaktuj się pod adresem e-mail: pawelluczkie@gmail.com
 * @todo Zaimplementować obsługę kolizji.
 * @todo Zrobic dobre demo.
*/

#include "sdl.h"
#include "SDLEventer.h"
#include "map.h"

using namespace shipEngine;
int main ( int argc, char** argv )
{
    sdl esdeel;
    SDLEventer eventer;
    map mapa;
    int xres = 800, yres = 600;
    esdeel.setResolution(xres, yres, true);
    mapa.setRenderer(&esdeel);
    mapa.setTileSize(40, 40);
    mapa.setSize(25, 20);
    maptileinfo tiles;
    tiles.imgid=esdeel.openImage("kropki.bmp");
    std::map<int, int> tilesid;
    tilesid.insert(std::make_pair(0, 0));
    tilesid.insert(std::make_pair(1, 1));
    tilesid.insert(std::make_pair(2, 2));
    tilesid.insert(std::make_pair(3, 3));
    tilesid.insert(std::make_pair(4, 4));
    tiles.tilesid=tilesid;
    mapa.setTiles(&tiles);
    std::vector<std::vector<int> > realmap;
    std::vector<int> temp;
    temp.push_back(0);
    temp.push_back(1);
    temp.push_back(2);
    temp.push_back(3);
    temp.push_back(4);
    temp.push_back(0);
    temp.push_back(1);
    temp.push_back(2);
    temp.push_back(3);
    temp.push_back(4);
    temp.push_back(0);
    temp.push_back(1);
    temp.push_back(2);
    temp.push_back(3);
    temp.push_back(4);
    temp.push_back(0);
    temp.push_back(1);
    temp.push_back(2);
    temp.push_back(3);
    temp.push_back(4);
    temp.push_back(0);
    temp.push_back(1);
    temp.push_back(2);
    temp.push_back(3);
    temp.push_back(4);
    realmap.push_back(temp);
    realmap.push_back(temp);
    realmap.push_back(temp);
    realmap.push_back(temp);
    realmap.push_back(temp);
    realmap.push_back(temp);
    realmap.push_back(temp);
    realmap.push_back(temp);
    realmap.push_back(temp);
    realmap.push_back(temp);
    realmap.push_back(temp);
    realmap.push_back(temp);
    temp[0]=4;
    realmap.push_back(temp);
    realmap.push_back(temp);
    realmap.push_back(temp);
    realmap.push_back(temp);
    realmap.push_back(temp);
    realmap.push_back(temp);
    realmap.push_back(temp);
    realmap.push_back(temp);
    realmap.push_back(temp);
    realmap.push_back(temp);
    realmap.push_back(temp);
    realmap.push_back(temp);
    realmap.push_back(temp);
    mapa.setMap(&realmap);
    sprite sp;
    sp.dstx=0;
    sp.dsty=0;
    sp.srcx=0;
    sp.srcy=0;
    sp.w=100;
    sp.h=60;
    sp.r=72;
    sp.g=170;
    sp.b=50;
    //int cblogo = esdeel.openImage("cb.bmp");
    esdeel.flip();
    //esdeel.drawSprite(esdeel.openImage("cb.bmp"), sp);

    //esdeel.drawImage(esdeel.openImage("cb.bmp"), 0, 0);
    SDL_Event *ev=eventer.getEvent();
    bool quit = false;
    bool mover = false, movel = false, moveu = false, moved = false;
    while(!quit)
    {
        ev=eventer.getEvent();
        esdeel.clearScreen();
        if(ev != NULL)
        {
            if(ev->type==SDL_KEYDOWN)
            {
                if(ev->key.keysym.sym==SDLK_RIGHT) mover=true;
                if(ev->key.keysym.sym==SDLK_LEFT) movel=true;
                if(ev->key.keysym.sym==SDLK_UP) moveu=true;
                if(ev->key.keysym.sym==SDLK_DOWN) moved=true;
                if(ev->key.keysym.sym==SDLK_ESCAPE) quit=true;
            }
            else if(ev->type==SDL_KEYUP)
            {
                if(ev->key.keysym.sym==SDLK_RIGHT) mover=false;
                if(ev->key.keysym.sym==SDLK_LEFT) movel=false;
                if(ev->key.keysym.sym==SDLK_UP) moveu=false;
                if(ev->key.keysym.sym==SDLK_DOWN) moved=false;
            }
            else if(ev->type==SDL_QUIT)
            {
                quit=true;
            }
        }
        if(mover) mapa.offsetx++;//sp.dstx++;
        if(movel) mapa.offsetx--;//sp.dstx--;
        if(moveu) mapa.offsety++;//sp.dstx++;
        if(moved) mapa.offsety--;//sp.dstx++;
        mapa.draw();
        esdeel.flip();
        //SDL_Delay(2);
    }
    //SDL_Delay(5000);
    return 0;
}
